/**
 * Copyright &copy; 2012-2016 <a href="https://github.com/thinkgem/jeesite">JeeSite</a> All rights reserved.
 */
package com.jiadakeji.ppm.modules.business.entity;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.jiadakeji.ppm.common.persistence.DataEntity;
import com.jiadakeji.ppm.common.persistence.Page;
import org.hibernate.validator.constraints.Length;

import java.util.Date;

/**
 * 应收台账Entity
 * @author HHAOYU
 * @version 2019-07-09
 */
public class FeeCharge extends DataEntity<FeeCharge> {

	public static final String STATUS_UNFINISH = "0";
	public static final String STATUS_TIMEOUT = "1";
	public static final String STATUS_FINISH = "2";
	
	private static final long serialVersionUID = 1L;
	private String customerName;

	private String roomId;		// 房屋id
	private String feeMonthId;		// 缴费月份ID
	private Double manageFee;		// 物业管理费
	private Double avgElecFee;		// 均摊电费
	private Double avgWaterFee;		// 均摊水费
	private Double secondPushElecFee;		// 二次加压送水用电费
	private Double elevatorFee;		// 电梯费
	private Double carMonthFee;		// 车辆费用
	private Double totalFee;		// 总费用
	private Date publishDate;		// 发布时间
	private Date feebackBeginDate;		// 违约金开始收费时间
	private Double feebackRate;		// 违约金费率
	private Double feebackMoney;		// 违约金
	private String status;		// 状态
	private String noStatus ;	//非状态
	private Room room;
	private FeeMonth feeMonth;
	private String roomUseFlag;

	private FeeReceive feeReceive;
	private String buildingName;
	private String communityName;

	private Date beginDateTime;
	private Date endDateTime;
	
	public FeeCharge() {
		super();
	}

	public FeeCharge(String id){
		super(id);
	}


	@JsonProperty
	@Override
	public Page getPage() {
		if (page == null){
			page = new Page<FeeCharge>();
		}
		return page;
	}

	@Length(min=0, max=32, message="房屋id长度必须介于 0 和 32 之间")
	public String getRoomId() {
		return roomId;
	}

	public void setRoomId(String roomId) {
		this.roomId = roomId;
	}

	
	@Length(min=0, max=32, message="缴费月份ID长度必须介于 0 和 32 之间")
	public String getFeeMonthId() {
		return feeMonthId;
	}

	public void setFeeMonthId(String feeMonthId) {
		this.feeMonthId = feeMonthId;
	}
	
	public Double getManageFee() {
		return manageFee;
	}

	public void setManageFee(Double manageFee) {
		this.manageFee = manageFee;
	}
	
	public Double getAvgElecFee() {
		return avgElecFee;
	}

	public void setAvgElecFee(Double avgElecFee) {
		this.avgElecFee = avgElecFee;
	}
	
	public Double getAvgWaterFee() {
		return avgWaterFee;
	}

	public void setAvgWaterFee(Double avgWaterFee) {
		this.avgWaterFee = avgWaterFee;
	}
	
	public Double getSecondPushElecFee() {
		return secondPushElecFee;
	}

	public void setSecondPushElecFee(Double secondPushElecFee) {
		this.secondPushElecFee = secondPushElecFee;
	}
	
	public Double getElevatorFee() {
		return elevatorFee;
	}

	public void setElevatorFee(Double elevatorFee) {
		this.elevatorFee = elevatorFee;
	}
	
	public Double getCarMonthFee() {
		return carMonthFee;
	}

	public void setCarMonthFee(Double carMonthFee) {
		this.carMonthFee = carMonthFee;
	}
	
	public Double getTotalFee() {
		return totalFee;
	}

	public void setTotalFee(Double totalFee) {
		this.totalFee = totalFee;
	}
	
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
	public Date getPublishDate() {
		return publishDate;
	}

	public void setPublishDate(Date publishDate) {
		this.publishDate = publishDate;
	}
	
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
	public Date getFeebackBeginDate() {
		return feebackBeginDate;
	}

	public void setFeebackBeginDate(Date feebackBeginDate) {
		this.feebackBeginDate = feebackBeginDate;
	}
	
	public Double getFeebackRate() {
		return feebackRate;
	}

	public void setFeebackRate(Double feebackRate) {
		this.feebackRate = feebackRate;
	}
	
	public Double getFeebackMoney() {
		return feebackMoney;
	}

	public void setFeebackMoney(Double feebackMoney) {
		this.feebackMoney = feebackMoney;
	}
	
	@Length(min=0, max=1, message="状态长度必须介于 0 和 1 之间")
	public String getStatus() {
		return status;
	}

	public void setStatus(String status) {
		this.status = status;
	}


	public String getRoomUseFlag() {
		return roomUseFlag;
	}

	public void setRoomUseFlag(String roomUseFlag) {
		this.roomUseFlag = roomUseFlag;
	}

	public Room getRoom() {
		return room;
	}

	public void setRoom(Room room) {
		this.room = room;
	}

	public FeeMonth getFeeMonth() {
		return feeMonth;
	}

	public void setFeeMonth(FeeMonth feeMonth) {
		this.feeMonth = feeMonth;
	}

	public FeeReceive getFeeReceive() {
		return feeReceive;
	}

	public void setFeeReceive(FeeReceive feeReceive) {
		this.feeReceive = feeReceive;
	}

	public String getBuildingName() {
		return buildingName;
	}

	public void setBuildingName(String buildingName) {
		this.buildingName = buildingName;
	}

	public String getCommunityName() {
		return communityName;
	}

	public void setCommunityName(String communityName) {
		this.communityName = communityName;
	}

	public String getNoStatus() {
		return noStatus;
	}

	public void setNoStatus(String noStatus) {
		this.noStatus = noStatus;
	}

	@JsonFormat(pattern = "yyyy-MM-dd")
	public Date getBeginDateTime() {
		return beginDateTime;
	}

	public void setBeginDateTime(Date beginDateTime) {
		this.beginDateTime = beginDateTime;
	}

	@JsonFormat(pattern = "yyyy-MM-dd")
	public Date getEndDateTime() {
		return endDateTime;
	}

	public void setEndDateTime(Date endDateTime) {
		this.endDateTime = endDateTime;
	}


	public String getCustomerName() {
		return customerName;
	}

	public void setCustomerName(String customerName) {
		this.customerName = customerName;
	}
}